//封装axios,配置请求地址 baseUrl
import axios from 'axios';

const instance = axios.create({
    baseURL: '/api',
});

// 请求拦截器
instance.interceptors.request.use(
    config => {
        //当请求方式是post方式时,统一携带请求头Content-type
        if (config.method === 'post') {
            config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
        }
        //统一携带请求头token
        let token = localStorage.getItem('token');
        if (token) {
            config.headers['token'] = token;
        }

        return config;
    },
    error => {
        //对请求错误做些什么？
        return Promise.reject(error);
    });

// 响应拦截器
instance.interceptors.response.use(
    res => {
        // console.log("这是响应拦截器");
        //对响应数据做点什么?
        // 可以对数据进行二次处理

        //return "zhangsan";
        //函数默认返回 undefined
        //return; //undefined
        //------------------------------------------------
        //统一异常处理
        if (res.data.code != 200) {
            alert("统一提醒:" + res.data.msg);
            return;  //此时返回 undefined 即 相当于false
        }

        // 因为，我们每次请求成功拿到数据，都是res.data.data相当于axios多包了一层data
        // 解决方案：在响应拦截器做统一处理
        return res.data;
    },
    error => {
        //对响应错误做什么?
        return Promise.reject(error);
    });

export default instance;

